package hannuota;

import java.awt.Component;
import java.awt.Container;
//表示汉诺塔游戏中的塔座位置
public class TowerPoint {
    int x, y; //表示塔座位置的横纵坐标
    boolean haveDisc;  //用于表示该位置是否有盘子
    Disc disc = null; //表示当前位置上的盘子，默认为null。



    public TowerPoint(int x, int y) {  //初始化塔座位置的横纵坐标
        this.x = x;
        this.y = y;
    }

    public boolean isHaveDisc() { //判断该位置是否有盘子
        return haveDisc;
    }

    public void setHaveDisc(boolean boo) { //设置当前位置是否有盘子

        haveDisc = boo;  //将传入的布尔值boo赋给haveDisc表示是否有盘子。


    }

    public int getX() {  //获取塔座位置的横坐标。



        return x;
    }

    public int getY() {  //获取塔座位置的纵坐标

        return y;
    }

    public boolean equals(TowerPoint p) {  //比较两个塔座位置是否相等
        if (p.getX() == this.getX() && p.getY() == this.getY())  //判断传入的塔座位置p的横纵坐标是否与当前实例的横纵坐标相等
            return true;
        else
            return false;
    }

    public void putDisc(Component com, Container con) {  //将盘子放置到该塔座位置上。


        disc = (Disc) com;  //将传入的组件com转换为Disc对象，并赋值给disc表示该位置上的盘子
        con.setLayout(null); //设置容器con的布局为null，即自由布局
        con.add(disc); //将盘子组件添加到容器中
        int w = disc.getBounds().width; //获取盘子组件的宽度和高度。
        int h = disc.getBounds().height; //设置盘子组件在容器中的位置
        disc.setBounds(x - w / 2, y - h / 2, w, h); //设置盘子组件在容器中的位置。
        haveDisc = true; //将该位置的haveDisc属性设置为true表示该位置上有盘子
        disc.setPoint(this); //将该位置信息设置到盘子对象中
        con.validate(); //对容器进行验证，以确保界面的更新
    }

    public Disc getDiscOnPoint() {  //定义了一个方法，用于获取该塔座位置上的盘子对象
        return disc;
    }

    //refresh
    public void removeDisc(Component com, Container con) {   //用于移除该位置上的盘子，com盘子，con塔
        if (com != null)  //检查传入的组件是否为空
            con.remove(com);
        con.validate();
    }
}